Certain software products are able to monitor themselves during execution and produce data points relating to status condition, action, event and other parameters and characteristics of the product or its working environment. These data points may be collected in a data warehouse. A software manufacturer may then query the data warehouse to obtain various metrics regarding its product.
The general process of data warehousing may include accepting raw data points, e.g., the unprocessed data sent from a software application, and performing some organization of the data points in order to store them in a structured manner within a database so that queries may be efficiently run on the database. However, setting up a data warehouse to accept incoming data points requires a prediction of the types of information that will be requested from the data warehouse.
Defining data structure prior to querying may result in queries being limited to a range of data and/or having a constrained view of the data, thereby inhibiting ad hoc querying. Moreover, while storing unstructured raw data may provide information to satisfy an ad hoc query, storing unstructured raw day may be prohibitively expensive as reporting applications tend to produce inordinate amounts of data. Also, querying unstructured data is cumbersome and inefficient.